WPF (Windows Presentation Foundation) এ Printing একটি গুরুত্বপূর্ণ ফিচার যা আপনাকে আপনার অ্যাপ্লিকেশনের কাস্টম কন্ট্রোল এবং কনটেন্ট প্রিন্ট করার সুযোগ দেয়। এটি ব্যবহারকারীদের জন্য কাস্টম আউটপুট তৈরি করতে সহায়ক, যেমন রিপোর্ট, ইনভয়েস, বা অন্য কোন ধরনের প্রিন্ট আউট। WPF প্রিন্টিং সিস্টেম কাস্টম কন্ট্রোল প্রিন্টিং, গ্রাফিক্স, এবং কনটেন্টের ইন্টারঅ্যাক্টিভ প্রিন্টিং সমর্থন করে।
WPF তে প্রিন্টিং সাধারণত PrintDialog এবং PrintQueue ব্যবহার করে করা হয়, এবং কাস্টম কন্ট্রোল বা কনটেন্ট প্রিন্ট করার জন্য Visual এবং PrintVisual মেথড ব্যবহার করা হয়।
WPF তে প্রিন্টিং কিভাবে কাজ করে?
WPF প্রিন্টিং সিস্টেমে PrintDialog, PrintDocument, এবং PrintVisual মেথডের মতো ক্লাস এবং ফাংশনগুলো রয়েছে, যা আপনাকে কাস্টম কন্ট্রোল বা কনটেন্টের প্রিন্ট আউট তৈরি করতে সাহায্য করে। PrintDialog ব্যবহার করে ব্যবহারকারী প্রিন্টার নির্বাচন করতে পারে এবং PrintVisual বা PrintPage মেথড ব্যবহার করে প্রিন্টের জন্য কনটেন্ট প্রস্তুত করা হয়।
কাস্টম কন্ট্রোল প্রিন্টিং (Printing Custom Controls)
Custom Control বা User Control প্রিন্ট করার জন্য আপনাকে কন্ট্রোলের Visual Tree কে প্রিন্ট করতে হবে। WPF এ এটি করা যায় PrintVisual মেথডের মাধ্যমে, যা কন্ট্রোলের গ্রাফিক্যাল কন্টেন্ট সরাসরি প্রিন্টার থেকে প্রিন্ট করে।
Custom Control Print Example:
ধরা যাক, আমাদের একটি কাস্টম বাটন তৈরি আছে এবং আমরা এই বাটনটির প্রিন্ট আউট তৈরি করতে চাই।
- Custom Button তৈরি করা:
<Button x:Name="myButton" Content="Print Me" Width="200" Height="100" />
- Print Button কোডে:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Printing;
namespace WPFApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
// Create a PrintDialog
PrintDialog printDialog = new PrintDialog();
// Check if the user selected a printer
if (printDialog.ShowDialog() == true)
{
// Print the Button's Visual
printDialog.PrintVisual(myButton, "Custom Button Print");
}
}
}
}
এখানে, PrintVisual মেথড ব্যবহার করা হচ্ছে, যা myButton কন্ট্রোলের Visual Tree কে প্রিন্ট করবে এবং "Custom Button Print" নামের শিরোনামে প্রিন্ট করবে।
কাস্টম কনটেন্ট প্রিন্টিং (Printing Custom Content)
আপনি যদি কোনো text, graphics অথবা complex content প্রিন্ট করতে চান, তাহলে আপনাকে DrawingVisual বা Visual ব্যবহার করে কনটেন্ট প্রিন্ট করতে হবে।
Content Print Example:
- Text and Graphics Print Example:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Printing;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WPFApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void PrintContent_Click(object sender, RoutedEventArgs e)
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
// Create a DrawingVisual object
DrawingVisual drawingVisual = new DrawingVisual();
// Draw content (text and shapes)
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawText(
new FormattedText("Hello, WPF Printing!", System.Globalization.CultureInfo.CurrentCulture,
FlowDirection.LeftToRight, new Typeface("Arial"), 32, Brushes.Black),
new Point(100, 100)
);
// Draw a simple rectangle
drawingContext.DrawRectangle(Brushes.LightBlue, new Pen(Brushes.Black, 2), new Rect(100, 150, 200, 100));
}
// Print the visual content
printDialog.PrintVisual(drawingVisual, "Custom Content Print");
}
}
}
}
এখানে, আমরা একটি DrawingVisual তৈরি করেছি এবং এতে text এবং graphics (rectangle) অঙ্কন করেছি। তারপর PrintDialog ব্যবহার করে কনটেন্টটি প্রিন্ট করা হয়েছে।
Printing Content with PageSettings
যখন আপনি প্রিন্টিং করবেন, তখন PageSettings এবং PrintTicket ব্যবহার করে কাস্টমাইজ করা যাবে, যেমন পেজ সাইজ, মার্জিন, অরিয়েন্টেশন ইত্যাদি।
Example with PageSettings:
using System.Windows;
using System.Windows.Printing;
namespace WPFApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void PrintContentWithSettings_Click(object sender, RoutedEventArgs e)
{
PrintDialog printDialog = new PrintDialog();
// Setting page orientation and size
printDialog.PageRangeSelection = PageRangeSelection.AllPages;
printDialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
if (printDialog.ShowDialog() == true)
{
// Create a DrawingVisual to print content
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawText(
new FormattedText("Printed in Landscape!", System.Globalization.CultureInfo.CurrentCulture,
FlowDirection.LeftToRight, new Typeface("Arial"), 32, Brushes.Black),
new Point(100, 100)
);
}
// Print the visual content with the PageSettings
printDialog.PrintVisual(drawingVisual, "Landscape Print Example");
}
}
}
}
এখানে, PageOrientation.Landscape সেট করা হয়েছে, যাতে প্রিন্ট আউটটি ল্যান্ডস্কেপ মুডে প্রিন্ট হয়।
সারাংশ (Summary)
- Printing Custom Controls: WPF এ PrintVisual ব্যবহার করে কাস্টম কন্ট্রোল (যেমন বাটন, টেক্সটবক্স) এবং তাদের Visual Tree প্রিন্ট করা যায়। এতে UI কন্ট্রোলের গ্রাফিক্যাল রেন্ডারিং কন্টেন্ট সরাসরি প্রিন্ট করা হয়।
- Printing Custom Content: DrawingVisual ব্যবহার করে কাস্টম কনটেন্ট (যেমন টেক্সট, গ্রাফিক্স, আকার ইত্যাদি) প্রিন্ট করা সম্ভব।
- PrintDialog: প্রিন্টার নির্বাচন এবং প্রিন্টিং অপশন কাস্টমাইজ করার জন্য PrintDialog ব্যবহৃত হয়।
- PageSettings: প্রিন্টিংয়ের সময় পেজ সাইজ, মার্জিন, অরিয়েন্টেশন ইত্যাদি সেট করার জন্য PageSettings ব্যবহার করা যায়।
WPF প্রিন্টিং সিস্টেম কাস্টম কন্ট্রোল এবং কনটেন্টের জন্য শক্তিশালী সমাধান প্রদান করে, যা বিভিন্ন ধরনের প্রিন্ট আউট তৈরি করার ক্ষেত্রে উপকারী।
Read more